home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX Base Documentation 1998 November
/
IRIX 6.5.2 Base Documentation November 1998.img
/
usr
/
relnotes
/
nedit
/
nedit.doc
< prev
next >
Wrap
Text File
|
1998-11-02
|
88KB
|
1,940 lines
NEDIT 4.0.3
NEdit is a GUI (Graphical User Interface) style text editor for programs and
plain-text files. Users of Macintosh and MS Windows based text editors will
find NEdit a familiar and comfortable environment. NEdit provides all of the
standard menu, dialog, editing, and mouse support, as well as all of the
standard shortcuts to which the users of modern GUI based environments are
accustomed. For users of older style Unix editors, welcome to the world of
mouse-based editing!
NEdit is free, available in source and binary form for Silicon Graphics, HP,
DEC, IBM, Sun, and Linux systems, as well as for VAX and Alpha VMS. Executables
for non-supported systems are also available. Porting to other Motif platforms
has generally been easy.
INSTALLING NEDIT
NEdit is a single stand-alone executable file which can be installed by simply
copying the appropriate executable "nedit" for your system. Both sources
and executables are available via anonymous ftp to ftp.fnal.gov in the
/pub/nedit directory. The optional "nc" (NEdit Client) program is also
available for users who want to run nedit in client/server mode.
GETTING STARTED
If you are new to X windows, you may need some help setting up your X
environment or using X across a network. If you have used other Motif
programs before, you can probably use NEdit without much instruction.
Start NEdit by typing nedit. You can specify a file or several files to edit
on the command line, but you can also open them from inside NEdit. If you
don't specify a file name to edit, NEdit will open a window titled "Untitled".
You can create a new file by typing into this window and choosing Save or
Save As... from the File menu. There is no "main window" in NEdit, all
editor windows are equivalent, and NEdit remains running as long as at least
one window is open.
Most editor commands are available from the pulldown menus (File, Edit, Search,
etc.). If you make a mistake, any editing operation can be undone by
selecting Undo from the Edit menu. Online help is also available through the
Help menu on the right-hand side of the menu bar.
To open an existing file once nedit is running, choose Open... from the File
menu. Select the file that you want to open in the pop-up dialog that
appears, and click on OK. You may have any number of files open at the same
time. Each file will appear in its own editor window. Using Open..., rather
than re-typing the nedit command and running additional copies of NEdit, is
both more memory-efficient, and allows NEdit to better manage your files.
As you become more familiar with NEdit, you can use the control and function
keys shown on the right side of the pull-down menus, as a substitute for
selecting items with the mouse.
Dialogs are also streamlined so you can enter information quickly and without
using the mouse. Keyboard focus is automatically directed to the first field
in a dialog when the dialog pops up. To move the keyboard focus around a
dialog, use the tab and arrow keys. One of the buttons in a dialog is usually
drawn with a thick, indented, outline. This button can be activated by
pressing return or enter. For example, to replace the string "thing" with
"things" type:
<ctrl-r>thing<tab>things<return>
To open a file named "whole_earth.c", type:
<ctrl-o>who<return>
(how much of the filename you need to type depends on the other files in the
directory). See the section titled KEYBOARD SHORTCUTS for more information.
SELECTING, CUTTING, and PASTING
NEdit has two general types of selections, primary (highlighted text), and
secondary (underlined text). Selections can cover either a simple range of text
between two points in the file, or they can cover a rectangular area of the
file. Rectangular selections are only useful with non-proportional (fixed
spacing) fonts.
To select text for copying, deleting, or replacing, press the left mouse button
with the pointer at one end of the text you want to select, and drag it to the
other end. The text will become highlighted. To select a whole word, double
click (click twice quickly in succession). Double clicking and then dragging
the mouse will select a number of words. Similarly, you can select a whole
line or a number of lines by triple clicking or triple clicking and dragging.
Quadruple clicking selects the whole file. After releasing the mouse button,
you can still adjust a selection by holding down the shift key and dragging on
either end of the selection. To delete the selected text, press delete or
backspace. To replace it, begin typing.
To select a rectangle or column of text, hold the Ctrl key while dragging the
mouse. Rectangular selections can be used in any context that normal
selections can be used, including cutting and pasting, filling, shifting,
dragging, and searching. Operations on rectangular selections automatically
fill in tabs and spaces to maintain alignment of text within and to the right
of the selection. Note that the interpretation of rectangular selections by
Fill Paragraph is slightly different from that of other commands, the section
titled "TEXT FILLING" has details.
The middle mouse button can be used to make an additional selection (called the
secondary selection). As soon as the button is released, the contents of this
selection will be copied to the insert position of the window where the mouse
was last clicked (the destination window). This position is marked by a caret
shaped cursor when the mouse is outside of the destination window. If there is
a (primary) selection, adjacent to the cursor in the window, the new text will
replace the selected text. Holding the shift key while making the secondary
selection will move the text, deleting it at the site of the secondary
selection, rather than copying it.
Selected text can also be dragged to a new location in the file using the
middle mouse button. Holding the shift key while dragging the text will copy
the selected text, leaving the original text in place. Holding the control key
will drag the text in overlay mode.
Normally, dragging moves text by removing it from the selected position at the
start of the drag, and inserting it at a new position relative to to the
mouse. Dragging a block of text over existing characters, displaces the
characters to the end of the selection. In overlay mode, characters which are
occluded by blocks of text being dragged are simply removed. When dragging
non-rectangular selections, overlay mode also converts the selection to
rectangular form, allowing it to be dragged outside of the bounds of the
existing text.
The section "Using the Mouse" sumarizes the mouse commands for making primary
and secondary selections. Primary selections can also be made via keyboard
commands, see "Keyboard Shortcuts".
The easiest way to copy and move text around in your file or between windows,
is to use the clipboard, an imaginary area that temporarily stores text and
data. The Cut command removes the selected text (see Selecting Text) from your
file and places it in the clipboard. Once text is in the clipboard, the Paste
command will copy it to the insert position in the current window. For
example, to move some text from one place to another, select it by dragging the
mouse over it, choose Cut to remove it, click the pointer to move the insert
point where you want the text inserted, then choose Paste to insert it. Copy
copies text to the clipboard without deleting it from your file. You can also
use the clipboard to transfer text to and from other Motif programs and X
programs which make proper use of the clipboard.
FINDING AND REPLACING TEXT
The Search menu contains a number of commands for finding and replacing text.
The Find... and Replace... commands present dialogs for entering text for
searching and replacing. These dialogs also allow you to choose whether you
want the search to be sensitive to upper and lower case, or whether to use the
standard Unix pattern matching characters (regular expressions). Searches
begin at the current text insertion position.
Find Again and Replace Again repeat the last find or replace command without
prompting for search strings. To selectively replace text, use the two
commands in combination: Find Again, then Replace Again if the highlighted string
should be replaced, or Find Again again to go to the next string.
Find Selection searches for the text contained in the current primary selection
(see Selecting Text). The selected text does not have to be in the current
editor window, it may even be in another program. For example, if the word dog
appears somewhere in a window on your screen, and you want to find it in the
file you are editing, select the word dog by dragging the mouse across it,
switch to your NEdit window and choose Find Selection from the Search menu.
Searching Backwards
Holding down the shift key while choosing any of the search or replace commands
from the menu (or using the keyboard shortcut), will search in the reverse
direction. Users who have set the search direction using the buttons in the
search dialog, may find it a bit confusing that Find Again and Replace Again
don't continue in the same direction as the original search (for experienced
users, consistency of the direction implied by the shift key is more
important).
Selective Replacement
To replace only some occurrences of a string within a file, choose Replace...
from the Search menu, enter the string to search for and the string to
substitute, and finish by pressing the Find button. When the first occurrence
is highlighted, use either Replace Again (^A) to replace it, or Find Again (^G)
to move to the next occurrence without replacing it, and continue in such a
manner through all occurrences of interest.
To replace all occurrences of a string within some range of text, select the
range (see Selecting Text), choose Replace... from the search menu, type the
string to search for and the string to substitute, and press the "R. in
Selection" button in the dialog. Note that selecting text in the Replace...
dialog will unselect the text in the window.
Regular Expressions
Regular expressions are available in the Find... and Replace... dialogs as a
way to match inexact sequences of characters. Regular expression substitution
can also be used to program automatic editing operations. For example, the
following are search and replace strings to find occurences of the subroutine
get_x, reverse the first and second parameters, add a third parameter of NULL,
and change the name to new_get_x":
Search string: get_x\(([^ ,]*), ([^\)]*)\)
Replace string: new_get_x(\2, \1, NULL)
To use regular expressions, click on the Regular Expression button in the
Find... or Replace... dialogs before doing a search or replacement.
Regular Expression Syntax
The components of a regular expression are: branches, pieces, atoms, and
ranges. A regular expression consists of zero or more branches, separated by
`|'. It matches anything that matches one of the branches.
A branch is zero or more pieces, concatenated. It matches a match for the
first, followed by a match for the second, etc.
A piece is an atom possibly followed by `*', `+', or `?'. An atom followed by
`*' matches a sequence of 0 or more matches of the atom. An atom followed by
`+' matches a sequence of 1 or more matches of the atom. An atom followed by
`?' matches a match of the atom, or the null string.
An atom is a regular expression in parentheses (matching a match for the
regular expression), a range (see below), `.' (matching any single character),
`^' (matching the null string at the beginning of a line string), `$' (matching
the null string at the end of a line), a `\' followed by a single character
(matching that character), or a single character with no other significance
(matching that character). \t, \n, \b, \r, and \f represent the characters tab
newline, backspace, carriage return, and form feed.
A range is a sequence of characters enclosed in `[]'. It normally matches any
single character from the sequence. If the sequence begins with `^', it
matches any single character not from the rest of the sequence. If two
characters in the sequence are separated by `-', this is shorthand for the full
list of ASCII characters between them (e.g. `[0-9]' matches any decimal
digit). To include a literal `]' in the sequence, make it the first character
(following a possible `^'). To include a literal `-', make it the first or
last character. A backslash `\' followed by a single character includes that
character, however backslashes are not necessary for most special characters,
since inside a range, only the `]', `-', and '\' characters are treated
specially.
Substitution
Wherever the substitution string contains the character `&', NEdit will
substitute the the entire string that was matched in the Find operation. Up to
nine sub-expressions of the match string can also be inserted into the
replacement string, using `\' followed by a digit. \1 through \9 represent the
strings that matched parenthesized expressions within the regular expression,
numbered left-to-right in order of their opening parentheses. Preceding & or
\1-9 with \U, \u, \L, or \l adjusts the case of the inserted text. \u and \l
change only the first character, while \U and \L change the entire string to
upper or lower case. \t, \n, \b, \r, and \f represent the characters tab
newline, backspace, carriage return, and form feed in a substitution string
represent the tab and newline characters as they do in match strings.
Ambiguity
If a regular expression could match two different parts of the text, it will
match the one which begins earliest. If both begin in the same place but match
different lengths, or match the same length in different ways, life gets
messier, as follows.
In general, the possibilities in a list of branches are considered in
left-to-right order, the possibilities for `*', `+', and `?' are considered
longest-first, nested constructs are considered from the outermost in, and
concatenated constructs are considered leftmost-first. The match that will be
chosen is the one that uses the earliest possibility in the first choice that
has to be made. If there is more than one choice, the next will be made in the
same manner (earliest possibility) subject to the decision on the first
choice. And so forth.
For example, `(ab|a)b*c' could match `abc' in one of two ways. The first
choice is between `ab' and `a'; since `ab' is earlier, and does lead to a
successful overall match, it is chosen. Since the `b' is already spoken for,
the `b*' must match its last possibility-the empty string-since it must respect
the earlier choice.
In the particular case where no `|'s are present and there is only one `*',
`+', or `?', the net effect is that the longest possible match will be chosen.
So `ab*', presented with `xabbbby', will match `abbbb'. Note that if `ab*' is
tried against `xabyabbbz', it will match `ab' just after `x', due to the
begins-earliest rule. (In effect, the decision on where to start the match is
the first choice to be made, hence subsequent choices must respect it even if
this leads them to less-preferred alternatives.)
FEATURES FOR PROGRAMMERS
Indentation
With Auto Indent turned on (the default), NEdit keeps a running indent. When
you press the return key, space and tabs are inserted to line up the insert
point under the start of the previous line. Ctrl+Return in auto-indent mode
acts like a normal return, With auto-indent turned off, Ctrl+Return does
indentation.
The Shift Left and Shift Right commands adjust the indentation for several
lines at once. To shift a block of text one character to the right, select the
text, then choose Shift Right from the Edit menu. Note that the accelerator
keys for these menu items are Ctrl+9 and Ctrl+0, which correspond to the right
and left parenthesis on most keyboards. Remember them as adjusting the text in
the direction pointed to by the parenthesis character. Holding the Shift key
while selecting either Shift Left or Shift Right will shift the text by one tab
stop.
Tabs
Most Unix programs for text display and processing, assume an eight character
tab. Unfortunately, an 8 character tab is not convenient for programming in C,
C++, and other structured languages. Inside of NEdit and other editors that
allow you to change the interpretation of the tab character, it is much easier
to work with C code when the tab distance is set to match the program
indentation distance, usually 3 or 4 characters. However, there are serious
tradeoffs to using non-standard tabs. In addition to many Unix utilities not
displaying or interpreting the files correctly, other programmers may not
interpret the files correctly, or may use editors which can't display or edit
the files properly.
An alternative to changing the interpretation of the tab character is tab
emulation. In the Tabs... dialog, turning on Emulated Tabs causes the Tab key
to insert the correct number of spaces and/or tabs to bring the cursor the next
emulated tab stop, as if tabs were set at the emulated tab distance rather than
the hardware tab distance. Backspacing immediately after entering an emulated
tab will delete it as a unit, but as soon as you move the cursor away from the
spot, NEdit will forget that the collection of spaces and tabs is a tab, and
will treat it as separate characters. To enter a real tab character with
"Emulate Tabs" turned on, use Ctrl+Tab.
It is also possible to tell NEdit not to insert ANY tab characters at all in
the course of processing emulated tabs, and in shifting and rectangular
insertion/deletion operations, for programmers who worry about the
misinterpretation of tab characters on other systems.
Line Numbers
To find a particular line in a source file by line number, choose Goto Line
#... from the Search menu. You can also directly select the line number text
in the compiler message in the terminal emulator window (xterm, decterm,
winterm, etc.) where you ran the compiler, and choose Goto Selected from the
Search menu. Note that under AIXWindows (IBM), selections in aixterms appear
to go away when you release the mouse, but they are actually retained and can
be used by NEdit and other programs that use selections.
To find out the line number of a particular line in your file, turn on
Statistics Line in the Preferences menu and position the insertion point
anywhere on the line. The statistics line continuously updates the line number
of the line containing the cursor.
Matching Parentheses
To help you inspect nested parentheses, brackets, braces, quotes, and other
characters, NEdit has both an automatic parenthesis matching mode, and a Find
Matching command. Automatic parenthesis matching is activated when you type,
or move the insertion cursor after a parenthesis, bracket, or brace. It
momentarily highlights the matching character if that character is visible in
the window. To find a matching character anywhere in the file, select it or
position the cursor after it, and choose Find Matching from the Search menu.
If the character matches itself, such as a quote or slash, select the first
character of the pair. NEdit will match {, (, [, <, ", ', `, /, and \.
Opening Included Files
The Open Selected command in the File menu understands the C preprocessor's
#include syntax, so selecting an #include line and invoking Open Selected will
generally find the file referred to, unless doing so depends on the settings of
compiler switches or other information not available to NEdit.
Finding Subroutine and Data Declarations
NEdit can process tags files generated using the Unix ctags command. Ctags
creates index files correlating names of functions and declarations with their
locations in C, Fortran, or Pascal source code files. (See the ctags manual
page for more information). Ctags produces a file called "tags" which can be
loaded by NEdit. Once loaded, the information in the tags file enables NEdit
to go directly to the declaration of a highlighted function or data structure
name with a single command. To load a tags file, select "Load Tags File" from
the File menu and choose a tags file to load, or specify the name of the tags
file on the NEdit command line:
nedit -tags tags
NEdit can also be set to load a tags file automatically when it starts up.
Setting the X resource nedit.tagFile to the name of a tag file tells NEdit to
look for that file at startup time (see Customizing NEdit). The file name can
be either a complete path name, in which case NEdit will always load the same
tags file, or a file name without a path or with a relative path, in which case
NEdit will load it starting from the current directory. The second option
allows you to have different tags files for different projects, each
automatically loaded depending on the directory you're in when you start
NEdit. Setting the name to "tags" is an obvious choice since this is the name
that ctags uses.
To find the definition of a function or data structure once a tags file is
loaded, select the name anywhere it appears in your program (see SELECTING,
CUTTING, and PASTING) and choose "Find Definition" from the Search menu.
USING THE MOUSE
NEdit is one of the most mouse interactive text editors around, but you don't
need to know all of the details below to be productive. You can get by with
just the left mouse button, clicking to move the cursor, and dragging to make a
selection.
This section will make more sense if you also read the section called,
SELECTING, CUTTING, and PASTING, which explains the terminology of selections,
i.e. what is meant by primary, secondary, rectangular, etc.
The general meaning of mouse buttons and modifier keys is as follows:
Buttons
Button 1 (left) Cursor position and primary selection
Button 2 (middle) Secondary selections, and dragging and
copying primary selection
Modifier keys
Shift On primary selections, (left mouse button):
Extends selection to the mouse pointer
On secondary and copy operations, (middle):
Toggles between move and copy
Ctrl Makes selection rectangular or insertion
columnar
Alt* (on release) Exchange primary and secondary
selections.
Button 1
The left mouse button is used to position the cursor and to make primary
selections.
Click Moves the cursor
Double Click Selects a whole word
Triple Click Selects a whole line
Quadruple Click Selects the whole file
Shift Click Adjusts (extends or shrinks) the selection,
or if there is no existing selection, begins a
new selection between the cursor and the mouse.
Ctrl+Shift+Click Adjusts (extends or shrinks) the selection
rectangularly.
Drag Selects text between where the mouse was pressed
and where it was released.
Ctrl+Drag Selects rectangle between where the mouse was
pressed and where it was released.
Button 2
The middle mouse button is for making secondary selections, and copying and
dragging the primary selection
Click Copies the primary selection to the clicked position.
Shift+Click Moves the primary selection to the clicked position,
deleting it from its original position.
Drag 1) Outside of the primary selection:
Begins a secondary selection.
2) Inside of the primary selection:
Moves the entire selection by dragging.
Ctrl+Drag 1) Outside of the primary selection:
Begins a rectangular secondary selection.
2) Inside of the primary selection:
Drags the selection in overlay mode (see below).
When the mouse button is released after creating a secondary selection:
No Modifiers If there is a primary selection, replaces it with the
secondary selection. Otherwise, inserts the secondary
selection at the cursor position.
Shift Move the secondary selection, deleting it from its
original position. If there is a primary selection,
the move will replace the primary selection with the
secondary selection. Otherwise, moves the secondary
selection to to the cursor position.
Alt* Exchange the primary and secondary selections.
While moving the primary selection by dragging with the middle mouse button:
Shift Leaves a copy of the original selection in place rather than
removing it or blanking the area.
Ctrl Changes from insert mode to overlay mode (see below).
Escape Cancels drag in progress.
Overlay Mode: Normally, dragging moves text by removing it from the selected
position at the start of the drag, and inserting it at a new position relative
to to the mouse. When you drag a block of text over existing characters, the
existing characters are displaced to the end of the selection. In overlay
mode, characters which are occluded by blocks of text being dragged are simply
removed. When dragging non-rectangular selections, overlay mode also converts
the selection to rectangular form, allowing it to be dragged outside of the
bounds of the existing text.
* The Alt key may be labeled Meta or Compose-Character on some keyboards. Some
window managers, including default configurations of mwm, bind combinations of
the Alt key and mouse buttons to window manager operations. In NEdit, Alt is
only used on button release, so regardless of the window manager bindings for
Alt-modified mouse buttons, you can still do the corresponding NEdit operation
by using the Alt key AFTER the initial mouse press, so that Alt is held while
you release the mouse button. If you find this difficult or annoying, you can
re-configure most window managers to skip this binding, or you can re-configure
NEdit to use a different key combination.
KEYBOARD SHORTCUTS
Most of the keyboard shortcuts in NEdit are shown on the right hand sides of
the pull-down menus. However, there are more which are not as obvious. These
include; dialog button shortcuts; menu and dialog mnemonics; labeled keyboard
keys, such as the arrows, page-up, page-down, and home; and optional Shift
modifiers on accelerator keys, like [Shift]Ctrl+F.
Menu Accelerators
Pressing the key combinations shown on the right of the menu items is a
shortcut for selecting the menu item with the mouse. Some items have the shift
key enclosed in brackets, such as [Shift]Ctrl+F. This indicates that the shift
key is optional. In search commands, including the shift key reverses the
direction of the search. In Shift commands, it makes the command shift the
selected text by a whole tab stop rather than by single characters.
Menu Mnemonics
Pressing the Alt key in combination with one of the underlined characters in
the menu bar pulls down that menu. Once the menu is pulled down, typing the
underlined characters in a menu item (without the Alt key) activates that
item. With a menu pulled down, you can also use the arrow keys to select menu
items, and the space or enter keys to activate them.
Keyboard Shortcuts within Dialogs
One button in a dialog is usually marked with a thick indented outline.
Pressing the Return or Enter key activates this button.
All dialogs have either a Cancel or Dismiss button. This button can be
activated by pressing the Escape (or Esc) key.
Pressing the tab key moves the keyboard focus to the next item in a dialog.
Within an associated group of buttons, the arrow keys move the focus among the
buttons. Shift+Tab moves backward through the items.
Most items in dialogs have an underline under one character in their name.
Pressing the Alt key along with this character, activates a button as if you
had pressed it with the mouse, or moves the keyboard focus to the associated
text field or list.
You can select items from a list by using the arrow keys to move the selection
and space to select.
In file selection dialogs, you can type the beginning characters of the file
name or directory in the list to select files
Labeled Function Keys
The labeled function keys on standard workstation and PC keyboards, like the
arrows, and page-up and page-down, are active in NEdit, though not shown in the
pull-down menus.
Holding down the control key while pressing a named key extends the scope of
the action that it performs. For example, Home normally moves the insert
cursor the beginning of a line. Ctrl+Home moves it to the beginning of the
file. Backspace deletes one character, Ctrl+Backspace deletes one word.
Holding down the shift key while pressing a named key begins or extends a
selection. Combining the shift and control keys combines their actions. For
example, to select a word without using the mouse, position the cursor at the
beginning of the word and press Ctrl+Shift+RightArrow. The Alt key modifies
selection commands to make the selection rectangular.
Under X and Motif, there are several levels of translation between keyboard
keys and the actions they perform in a program. The "Customizing NEdit", and
"X Resources" sections of the Help menu have more information on this subject.
Because of all of this configurability, and since keyboards and standards for
the meaning of some keys vary from machine to machine, the mappings may be
changed from the defaults listed below.
Modifier Keys (in general)
Ctrl Extends the scope of the action that the key would otherwise
perform. For example, Home normally moves the insert cursor the
beginning of a line. Ctrl+Home moves it to the beginning of the
file. Backspace deletes one character, Ctrl+ Backspace deletes
one word.
Shift Extends the selection to the cursor position. If there's no
selection, begins one between the old and new cursor positions.
Alt When modifying a selection, makes the selection rectangular.
(For the effects of modifier keys on mouse button presses, see the section
titled "Using the Mouse")
All Keyboards
Escape Cancels operation in progress: menu selection, drag,
selection, etc. Also equivalent to cancel button in
dialogs.
Backspace Delete the character before the cursor
Ctrl+BS Delete the word before the cursor
Arrows
Left Move the cursor to the left one character
Ctrl+Left Move the cursor backward one word (Word delimiters
are settable, see Customizing NEdit, and X Resources)
Right Move the cursor to the right one character
Ctrl+Right Move the cursor forward one word
Up Move the cursor up one line
Ctrl+Up Move the cursor up one paragraph. (Paragraphs are
delimited by blank lines.)
Down Move the cursor down one line.
Ctrl+Down Move the cursor down one paragraph.
Ctrl+Return Return with automatic indent, regardless of the setting
of Auto Indent.
Shift+Return Return without automatic indent, regardless of the
setting of Auto Indent.
Ctrl+Tab Insert an ascii tab character, without processing
emulated tabs.
Alt+Ctrl+<c> Insert the control-code equivalent of a key <c>
Ctrl+/ Select everything (same as Select All menu item or ^A)
Ctrl+\ Unselect
Ctrl+U Delete to start of line
PC Standard Keyboard
Ctrl+Insert Copy the primary selection to the clipboard (same as
Copy menu item or ^C) for compatibility with Motif
standard key binding
Shift+Ctrl+
Insert Copy the primary selection to the cursor location.
Delete Delete the character before the cursor. (Can be
configured to delete the character after the cursor,
see Customizing NEdit, and X Resources)
Ctrl+Delete Delete to end of line.
Shift+Delete Cut, remove the currently selected text and place it
in the clipboard. (same as Cut menu item or ^X) for
compatibility with Motif standard key binding.
Shift+Ctrl+
Delete Cut the primary selection to the cursor location.
Home Move the cursor to the beginning of the line.
Ctrl+Home Move the cursor to the beginning of the file.
End Move the cursor to the end of the line.
Ctrl+End Move the cursor to the end of the file.
PageUp Scroll and move the cursor up by one page.
Ctrl+PageUp Scroll and move the cursor left by one page.
PageDown Scroll and move the cursor down by one page.
Ctrl+PageDown Scroll and move the cursor right by one page.
F10 Make the menu bar active for keyboard input (Arrow
Keys, Return, Escape, and the Space Bar)
Specialty Keyboards
On machines with different styles of keyboards, generally, text editing actions
are properly matched to the labeled keys, such as Remove, Next-screen, etc..
If you prefer different key bindings, see the heading titled "Binding Keys to
Actions" in the X RESOURCES section below.
TEXT FILLING
The Fill Paragraph command in NEdit is important for anyone who types plain
blocks of text. In a plain text file, there is no way to store any additional
format information, like a word processor might do. This makes it impossible
for the editor to tell parts of the text belong together as a paragraph from
carefully arranged individual lines. (In continuous wrap mode, you can acheive
this affect by omitting newlines within paragraphs, but files with extremely
long lines are not standard in Unix, and may not be compatible with all
tools). So, unless you're operating in continuous wrap mode, editing in the
middle of a paragraph will usually leave the lines messy and uneven.
Since NEdit can't act automatically to keep your text lined up, you need to
tell it explicitly where to operate, and that is what Fill Paragraph is for.
It arranges lines to fill the space between two margins, wrapping the lines
neatly at word boundaries. Normally, the left margin for filling is inferred
from the text being filled, the left edge of the text, or the furthest left
non-whitespace character. The right margin is either the Wrap Margin, set in
the preferences menu (by default, the right edge of the window), or can also be
chosen on the fly by using a rectangular selection (see below).
There are three ways to use Fill Paragraph. The simplest is, while you are
typing text, and there is no selection, simply select Fill Paragraph (or type
Ctrl+J), and NEdit will arrange the text in the paragraph adjacent to the
cursor. A paragraph, in this case, means an area of text delimited by blank
lines.
The second way to use Fill Paragraph is with a selection. If you select a
range of text and then chose Fill Paragraph, all of the text in the selection
will be filled. Again, continuous text between blank lines is interpreted as
paragraphs and filled individually.
The third way to use Fill Paragraph is with a rectangular selection. Fill
Paragraph treats rectangular selections differently from other commands.
Instead of simply filling the text inside the rectangular selection, NEdit
interprets the right edge of the selection as the requested wrap margin. Text
to the left of the selection is not disturbed (the usual interpretation of a
rectangular selection), but text to the right of the selection is included in
the operation and is pulled in to the selected region.
SHIFT LEFT, SHIFT RIGHT
While shifting blocks of text is most important for programmers (See Features
for Programming), it is also useful for other tasks, such as creating indented
paragraphs.
To shift a block of text one tab stop to the right, select the text, then
choose Shift Right from the Edit menu. Note that the accelerator keys for
these menu items are Ctrl+9 and Ctrl+0, which correspond to the right and left
parenthesis on most keyboards. Remember them as adjusting the text in the
direction pointed to by the parenthesis character. Holding the Shift key while
selecting either Shift Left or Shift Right will shift the text by one character.
It is also possible to shift blocks of text by selecting the text
rectangularly, and dragging it left or right (and up or down as well). Using a
rectangular selection also causes tabs within the selection to be recalculated
and substituted, such that the non-whitespace characters remain stationary with
respect to the selection.
SHELL COMMANDS/FILTERS
The Shell menu (Unix versions only) allows you to execute Unix shell commands
from within NEdit. You can add items to the menu to extend NEdit's command set
or to incorporate custom automatic editing features using shell commands or
editing languages like awk and sed. To add items to the menu, use the Shell
Commands... dialog in the Preferences menu under Default Settings. NEdit comes
pre-configured with a few useful Unix commands like spell and sort, but we
encourage you to add your own custom extensions.
Filter Selection... prompts you for a Unix command to use to process the
currently selected text. The output from this command replaces the contents of
the selection.
Execute Command... prompts you for a Unix command and replaces the current
selection with the output of the command. If there is no selection, it
deposits the output at the current insertion point.
Execute Command Line uses the position of the cursor in the window to indicate
a line to execute as a shell command line. The cursor may be positioned
anywhere on the line. This command allows you to use an NEdit window as an
editable command window for saving output and saving commands for re-execution.
The X resource called nedit.shell (See Customizing NEdit) determines which Unix
shell is used to execute commands. The default value for this resource is
/bin/csh.
LEARN/REPLAY
Selecting Learn Keystrokes from the Macro menu puts NEdit in learn mode. In
learn mode, keystrokes and menu commands are recorded, to be played back later,
using the Replay Keystrokes command, or pasted into a macro in the Macro
Commands dialog of the Default Settings menu in Preferences.
Note that only keyboard and menu commands are recorded, not mouse clicks or
mouse movements since these have no absolute point of reference, such as cursor
or selection position. When you do a mouse-based operation in learn mode,
NEdit will beep (repeatedly) to remind you that the operation was not recorded.
MACROS
NEdit 4.0 has a very limited ability to process macros. Macro commands can use
all of NEdit's editing functionality, available from either the keyboard or
menus, however, there is not yet a macro "language". That is, you can't use
branching or looping, and can't set or test variables.
The way to accomplish more complex editing tasks, is still to use the Shell
Commands dialog to attach programs written in awk, sed, Perl, etc.
As they stand, macros are useful for saving Learn/Replay sequences, for limited
key-binding, and, surprisingly, many very complex tasks can be coded in terms
of regular expression substitutions.
Key binding via macros is simpler than any other method available in NEdit,
because you don't have to deal with X resources or translation table syntax.
However, the only way to change menu accelerator keys is through X resources,
and if you try to do a lot key binding via the Macro Commands dialog, you will
quickly end up with a very large Macro menu.
A macro in this version of NEdit is simply a list of newline-separated
actions. NEdit action routines are listed in the Action Routines section of
the Help menu. The easiest way to write a macro, is to record keystrokes and
menu choices in learn mode, then paste the macro in the Macro Commands dialog,
using the Paste Learn/Replay Macro button.
SERVER MODE AND NC
NEdit can be operated on its own, or as a two-part client/server application.
Client/server mode is useful for integrating NEdit with software development
environments, mailers, and other programs; or just as a quick way to open files
from the shell command line without starting a new NEdit session.
To run NEdit in server mode, type:
nedit -server
NEdit can also be started in server mode via the nc program when no servers are
available.
The nc (for NEdit Client) program, which is distributed along with nedit, sends
commands to an nedit server to open files, select lines, or execute editor
actions. It accepts a limited set of the nedit command line options: -read,
-create, -line (or +n), -do, and a list of file names. Listing a file on the
nc command line means, open it if it is not already open and bring the window
to the front. -read and -create affect only newly opened files, but -line and
-do can also be used on files which are already open (See "NEdit Command Line"
for more information).
In typical Unix style, arguments affect the files which follow them on the
command line, for example:
incorrect: nc file.c -line 25
correct: nc -line 25 file.c
nc also accepts one command line option of its own, -noask (or -ask), which
instructs it whether to automatically start a server if one is not available.
This is also settable via the X resource, nc.autoStart (See X Resources below).
Sometimes it is useful to have more than one NEdit server running, for example
to keep mail and programming work separate, or more importantly for working
with tools like ClearCase which provide different views of the file system from
different shells. The option, -svrname, to both nedit and nc, allow you to
start, and communicate with, separate named servers. A named server responds
only to requests with the corresponding -svrname argument.
Communication between nc and nedit is through the X display. So as long as X
windows is set up and working properly, nc will will work properly as well. nc
uses the DISPLAY environment variable, the machine name and your user name to
find the appropriate server, meaning, if you have several machines sharing a
common file system, nc will not be able to find a server that is running on a
machine with a different host name, even though it may be perfectly appropriate
for editing a given file.
The command which nc uses to start an nedit server is settable via the X
resource nc.serverCommand, by default, "nedit -server".
CRASH RECOVERY
If a system crash, network failure, X server crash, or program error should
happen while you are editing a file, you can easily recover most of your work.
NEdit maintains a backup file which it updates periodically (every 8 editing
operations or 30 characters typed under Unix, or 80 characters under VMS).
This file is has the same name as the file that you are editing, but with the
character "~" (tilde) on Unix or "_" (underscore) on VMS prefixed to the name.
To recover a file after a crash, simply rename the file to remove the tilde
or underscore character, replacing the older version of the file. Because
several of the Unix shells consider the tilde to be a special character, you
may have to prefix the character with a "\" (backslash) when you move or
delete an NEdit backup file.
Example, to recover the file called "help.c" type the command:
mv \~help.c help.c
On VMS, type:
RENAME _HELP.C HELP.C
THE NEDIT COMMAND LINE
nedit [-read] [-create] [-line n | +n] [-server] [-do command] [-tags file]
[-tabs n] [-wrap] [-nowrap] [-autowrap] [-autoindent] [-noautoindent]
[-autosave] [-noautosave] [-rows n] [-columns n] [-font font]
[-geometry geometry] [-display [host]:server[.screen]
[-xrm resourcestring] [-svrname name] [file...]
-read -- Open the file Read Only regardless of the actual file
protection.
-create -- Don't warn about file creation when a file doesn't exist.
-line n (or +n) -- Go to line number n
-server -- Designate this session as an NEdit server, for processing
commands from the nc program. nc can be used to interface NEdit
to code development environments, mailers, etc., or just as a
quick way to open files from the shell command line without
starting a new NEdit session.
-do command -- Execute an NEdit action routine. on each file following
the -do argument on the command line. -do is particularly useful
from the nc program, where nc -do can remotely execute commands in
an nedit -server session.
-tags file -- Load a file of directions for finding definitions of
program subroutines and data objects. The file must be of the
format generated by the Unix ctags command.
-tabs n -- Set tab stops every n characters.
-wrap, -nowrap -- Wrap long lines at the right edge of the window
rather than continuing them past it. (Continuous Wrap mode)
-autowrap, -noautowrap -- Wrap long lines when the cursor reaches
the right edge of the window by inserting newlines at word
boundaries. (Auto Newline Wrap mode)
-autoindent, noautoindent -- Maintain a running indent.
-autosave, -noautosave -- Maintain a backup copy of the file being
edited under the name ~filename (on Unix) or _filename (on VMS).
-rows n -- Default height in characters for an editing window.
-columns n -- Default width in characters for an editing window.
-font font (or -fn font) -- Font for text being edited (Font for
menus and dialogs can be set with -xrm "*fontList:font").
-display [host]:server[.screen] -- The name of the X server to use.
host specifies the machine, server specifies the display server
number, and screen specifies the screen number. host or screen
can be omitted and default to the local machine, and screen 0.
-geometry geometry (or -g geometry) -- The initial size and/or
location of editor windows. The argument has the form:
[<width>x<height>][+|-][<xoffset>[+|-]<yoffset>]
where <width> and <height> are the desired width and height of
the window, and <xoffset> and <yoffset> are the distance from
the edge of the screen to the window, + for top or left, - for
bottom or right.
-background color (or -bg color) -- Background color. (background
color for text can be set separately with:
-xrm "nedit*text.background: color").
-foreground color (or -fg color) -- Foreground color. (foreground
color for text can be set separately with:
-xrm "nedit*text.foreground: color").
-xrm resourcestring -- Set the value of an X resource to override a
default value (see Customizing NEdit).
-svrname name -- When starting nedit in server mode, name the
server, such that it responds to requests only when nc is given
a correspoding -svrname argument. By naming servers, you can
run several simultaneously, and direct files and commands
specifically to any one.
CUSTOMIZATION
NEdit can be customized in quite a number of ways. The most important
user-settable options are presented in the Preferences menu, including all
options that users might need to change during an editing session. Options set
in the Default Settings sub-menu of the Preferences menu can be preserved
between sessions by selecting Save Defaults, which writes a file called .nedit
in the user's home directory. See the section titled "Preferences" for more
details.
User defined commands can be added to both NEdit's Shell and Macro menus.
Dialogs for creating items in these menus can be found in the Default Settings
sub menu of the Preferences menu (labeled Shell Commands and Macro Commands).
Since NEdit's macro facility is not yet well developed, the best way to add
complex automatic editing features is through shell commands that call programs
like awk and sed, rather than through NEdit macros.
For hard-core users who depend on NEdit every day and want to tune every
excruciating detail, there are also X resources for a vast number of such
details, down to the color of each individual button. However, some options of
importance to average users are also set via X resources, most importantly, key
binding. While limited key binding can be done through the Macro Commands
dialog in the Preferences menu, significant changes should be made via the
Translations resource and menu accelerator resources. The section titled "X
Resources" has more information on setting X resources, as well as a list of
selected resources of interest to the average user.
PREFERENCES
The Preferences menu allows you to set options for both the current editing
window, and default values for newly created windows and future NEdit
sessions. The first group of options in the Preferences menu take effect
immediately and refer to the current window only. Options in the Default
Settings sub-menu have no effect on the current window, but instead provide
initial settings for future windows created using the New or Open commands.
Preferences set in the Default Settings sub-menu can also be saved in a file
that is automatically read by NEdit at startup time, by selecting Save
Defaults.
Auto Indent -- Maintain a running indent. Pressing the return key will
line up the cursor with the indent level of the previous line.
AutoNewline Wrap -- Wrap text at word boundaries when the cursor
reaches the right margin, by replacing the space or tab at the last
word boundary with a newline character.
Continuous Wrap -- Wrap long lines which extend past the right margin.
This mode is typically used to produce files where newlines are
ommitted within paragraphs, to make text filling automatic (a kind
of poor-man's word processor). Text of this style is common on
Macs and PCs but is not necessarily supported very well under Unix
(except in programs which deal with e-mail, for which it is often
the format of choice).
WrapMargin... -- Set margin for Auto Newline Wrap, Continuous Wrap, and
Fill Paragraph. By default, lines wrap at the right margin of the
window, but a wrap margin can also be set at a specific column.
Preserve Last Version -- On Save, write a backup copy of the file as it
existed before the Save command with the extension .bck (Unix only).
Incremental Backup -- Periodically make a backup copy of the file being
edited under the name ~filename on Unix or _filename on VMS (see
Crash Recovery).
Show Matching (..) -- Momentarily highlight matching parenthesis,
brackets, and braces when one of these characters is typed, or when
the insertion cursor is positioned after it.
Text Font... -- Set the font for the text in this NEdit window. To set
the font for all windows use the equivalent item in the Default
Settings sub-menu. Note that since the font selection dialog
narrows its lists of font characteristics depending on those
already selected, it is important to know that you can unselect
them by clicking on the selected items a second time.
Tabs -- Set the tab distance (number of characters between tab stops)
for tab characters, and control tab emulation and use of tab
characters in padding and emulated tabs.
Statistics Line -- Show the full file name, line number, and length of
the file being edited.
Overtype -- In overtype mode, new characters entered replace the
characters in front of the insertion cursor, rather than being
inserted before them. This preference can not be saved as a default.
ReadOnly -- Lock the file against accidental modification. This
temporarily prevents the file from being modified in this NEdit
session. Note that this is diferent from setting the file
protection. This preference can not be saved as a default.
Default Settings -- Sub-menu of initial settings for future windows.
These are the same as the options in the main part of the menu, but
apply as defaults for future windows created during this NEdit
session. These settings can be saved using the Save Defaults
command below, to be loaded automatically each time NEdit is started.
SaveDefaults -- Save the default options as set under Default Settings
for future NEdit sessions.
X RESOURCES
NEdit has additional options to those provided in the Preferences menu which
are set using X resources. Like most other X programs, NEdit can be customized
to vastly unnecessary proportions, from initial window positions down to the
font and shadow colors of each individual button (A complete discussion of how
to do this is left to books on the X Windows System). Key binding (see
"Binding Keys to Actions" below) is one of the most useful of these resource
settable options.
X resources are usually specified in a file called .Xdefaults in your home
directory (on VMS this is sys$login:decw$xdefaults.dat). On some systems, this
file is read and its information attached to the X server (your screen) when
you start X. On other systems, the .Xdefaults file is read each time you run
an X program. When X defaults are attached to the server, you can use a
program called xrdb to update them without restarting X.
The .nedit File
The .nedit (saved preferences) file is in the same format as an X resource
file, and its contents can be moved into your X resource file. One reason for
doing so would be to attach server specific preferences, such as a default font
to a particular X server. Another reason for moving preferences into the X
resource file would be to keep preferences menu options and resource settable
options together in one place. Though the files are the same format, additional
resources should not be added to the .nedit file, they will not be read, and
NEdit modifies this file by overwriting it completely. Note also that the
contents of the .nedit file take precedence over the values of X resources.
Using Save Defaults after moving the contents of your .nedit file to your
.Xdefaults file will re-create the .nedit file, interfering with the options
that you have moved.
Selected X Resource Names
The following are selected NEdit resource names and default values for NEdit
options not settable via the Preferences menu (for preference resource names,
see your .nedit file):
nedit.tagFile: (not defined) -- The name of a file of the type produced
by the Unix ctags command which NEdit will load at startup time
(see Features for Programmers). The tag file provides a database
from which NEdit can automatically open files containing the
definition of a particular subroutine or data type.
nedit.shell: /bin/csh -- (Unix systems only) The Unix shell (command
interpreter) to use for executing commands from the Shell menu
nedit.wordDelimiters: .,/\\`'!@#%^&*()-=+{}[]":;<>? -- The characters,
in addition to blanks and tabs, which mark the boundaries between
words for the move-by-word (Ctrl+Arrow) and select-word (double
click) commands.
nedit.remapDeleteKey: True -- Setting this resource to False restores
the original Motif binding of the delete key to forward-delete.
This binding causes problems when X servers with one delete/
backspace configuration are connected with X clients of the other.
Users with a backspace key in the backspace/delete position and who
use only machines with that style of keyboard can set this resource
to False to get back the forward-delete function of the delete key.
nedit.stdOpenDialog: False -- Setting this resource to True restores the
standard Motif style of Open dialog. NEdit file open dialogs are
missing a text field at the bottom of the dialog, where the file
name can be entered as a string. The field is removed in NEdit to
encourage users to type file names in the list, a non-standard, but
much faster method for finding files.
nedit.printCommand: (system specific) -- Command used by the print dialog
to print a file, i.e. lp, lpr, etc..
nedit.printCopiesOption: (system specific) -- Option name used to
specify multiple copies to the print command. If the option should
be separated from its argument by a space, leave a trailing space.
If blank, no "Number of Copies" item will appear in the print dialog.
nedit.printQueueOption: (system specific) -- Option name used to specify
a print queue to the print command. If the option should be
separated from its argument by a space, leave a trailing space. If
blank, no "Queue" item will appear in the print dialog.
nedit.printNameOption: (system specific) -- Option name used to specify a
job name to the print command. If the option should be separated
from its argument by a space, leave a trailing space. If blank, no
job or file name will be attached to the print job or banner page.
nedit.printHostOption: (system specific) -- Option name used to specify a
host name to the print command. If the option should be separated
from its argument by a space, leave a trailing space. If blank, no
"Host" item will appear in the print dialog.
nedit.printDefaultQueue: (system specific) -- The name of the default
print queue. Used only to display in the print dialog, and has no
effect on printing.
nedit.printDefaultHost: (system specific) -- The node name of the
default print host. Used only to display in the print dialog, and
has no effect on printing.
nedit.multiClickTime: (system specific) -- Maximum time in milliseconds
allowed between mouse clicks within double and triple click actions.
nedit*scrollBarPlacement: BOTTOM_LEFT -- How scroll bars are placed in
NEdit windows, as well as various lists and text fields in the
program. Other choices are: BOTTOM_RIGHT, TOP_LEFT, or TOP_RIGHT.
nedit*text.heavyCursor: False -- For monitors with poor resolution or
users who have difficulty seeing the cursor, makes the cursor in the
text editing area of the window heavier and darker.
nedit*text.foreground: black -- Foreground color of the text editing area
of the NEdit window.
nedit*text.background: white -- Background color of the text editing area
of the NEdit window.
nedit*text.selectForeground: black -- Foreground (text) color for
selections in the text editing area of the NEdit window.
nedit*text.selectBackground: gray80 -- Color for selections in the text
editing area of the NEdit window.
nedit*text.highlightForeground: white -- Foreground (text) color for
highlights (parenthesis flashing) in the text editing area of the
NEdit window.
nedit*text.highlightBackground: red -- Color for highlights (parenthesis
flashing) in the text editing area of the NEdit window.
nedit*text.cursorForeground: black -- Color for text cursor in the text
editing area of the NEdit window.
nedit*text.blinkRate: 600 -- Blink rate of the text insertion cursor in
milliseconds. Set to zero to stop blinking.
nedit*text.Translations: -- Modifies key bindings (see below).
nedit*statsLine.foreground: black -- Foreground color of the statistics
line area of the NEdit window.
nedit*statsLine.background: gray70 -- Background color of the statistics
line area of the NEdit window.
nc.autoStart: False -- Whether the nc program should automatically start
an NEdit server (without prompting the user) if an appropriate server
is not found.
nc.serverCommand: nedit -server -- Command used by the nc program to
start an NEdit server.
Binding Keys to Actions
There are several ways to change key bindings in NEdit. The easiest way to add
a new key binding in NEdit is to define a macro in the Macro Commands dialog in
the Default Settings sub-menu of the Preferences menu. However, if you want to
change existing bindings or add a significant number of new key bindings you
will need to do so via X resources. The methods for changing menu accelerator
keys is different from that for general key binding via translation tables.
The section "Action Routines" lists the actions available to be bound.
Key Binding Via Translations
The most general way to bind actions to keys in NEdit is to use the translation
table associated with the text widget. To add a binding to Alt+Y to insert the
string "Hi!", for example, add lines similar to the following to your X
resource file:
NEdit*text.Translations: #override \n\
Alt<Key>y: insert-string("Hi!") \n
Unfortunately, the syntax for translation tables is not simple and is not
covered completely here. You will need to refer to a book on the X window
system for the exact syntax for translation tables. Translation tables map key
and mouse presses, window operations, and other kinds of events to actions.
The syntax (somewhat oversimplified) is a keyword; #override, #augment, or
#replace; followed by lines (separated by newline characters) pairing events
with actions. Events begin with modifiers, like Ctrl, Shift, or Alt, followed
by the event type in <>. BtnDown, Btn1Down, Btn2Down, Btn1Up, Key, KeyUp are
valid event types. For key presses, the event type is followed by the name of
the key. You can specify a combination of events, such as a sequence of key
presses, by separating them with commas. The other half of the event/action
pair is a set of actions. These are separated from the event specification by
a colon and from each other by spaces. Actions are names followed by
parentheses, optionally containing one or more parameters separated by comas.
Changing Menu Accelerator Keys
The menu shortcut keys shown at the right of NEdit menu items can also be
changed via X resources. Each menu item has two resources associated with it,
accelerator, the event to trigger the menu item; and acceleratorText, the
string shown in the menu. The form of the accelerator resource is the same as
events for translation table entries discussed above, though multiple keys and
other subtleties are not allowed. The resource name for a menu is the title in
lower case, followed by "Menu", the resource name of menu item is the name in
lower case, run together, with words separated by caps, and all punctuation
removed. For example, to change Cut to Ctrl+X, you would add the following to
your .Xdefaults file:
nedit*editMenu.cut.accelerator: Ctrl<Key>x
nedit*editMenu.cut.acceleratorText: Ctrl+X
Accelerator keys with optional shift key modifiers, like Find..., have an
additional accelerator resource with Shift appended to the name. For example:
nedit*searchMenu.find.acceleratorText: [Shift]Alt+F
nedit*searchMenu.find.accelerator: Alt<Key>f
nedit*searchMenu.findShift.accelerator: Shift Alt<Key>f
ACTION ROUTINES
All of the editing capabilities of NEdit are represented as a special type of
subroutine, called an action routine, which can be invoked from both macros and
translation table entries (see "Binding Keys to Actions" in the X Resources
section below).
Actions Representing Menu Commands:
File Menu Search Menu
--------------------- -----------------------
new() find()
open() find-dialog()
open-dialog() find-again()
open-selected() find-selection()
close() replace()
save() replace-dialog()
save-as() replace-all()
save-as-dialog() replace-in-selection()
revert-to-saved() replace-again()
include-file() goto-line-number()
include-file-dialog () goto-line-number-dialog()
load-tags-file() goto-selected()
load-tags-file-dialog() mark()
print() mark-dialog()
print-selection() goto-mark()
exit() goto-mark-dialog()
match()
find-definition()
split-window()
Edit Menu close-pane()
---------------------
undo() Shell Menu
redo() -----------------------
delete() filter-selection-dialog()
select-all() filter-selection()
shift-left() execute-command()
shift-left-by-tab() execute-command-dialog()
shift-right() execute-command-line()
shift-right-by-tab() shell-menu-command()
uppercase()
lowercase() Macro Menu
fill-paragraph() -----------------------
control-code-dialog() macro-menu-command()
The actions representing menu commands are named the same as the menu item with
punctuation removed, all lower case, and dashes replacing spaces. Without the
-dialog suffix, commands which normally prompt the user for information,
instead take the information from the routine's arguments (see below). To
present a dialog and ask the user for input, rather than supplying it in via
arguments, use the actions with the -dialog suffix.
Menu Action Routine Arguments:
Arguments are text strings enclosed in quotes. Below are the menu action
routines which take arguments. Optional arguments are inclosed in [].
open(filename)
save-as(filename)
include(filename)
load-tags-file(filename)
find-dialog([search-direction])
find(search-string [, search-direction], [search-type])
find-again([search-direction])
find-selection([search-direction])
replace-dialog([search-direction])
replace(search-string, replace-string, [, search-direction] [, search-type])
replace-in-selection(search-string, replace-string [, search-type])
replace-again([search-direction])
goto-line-number([line-number])
mark(mark-letter)
goto-mark(mark-letter)
filter-selection(shell-command)
execute-command(shell-command)
shell-menu-command(shell-menu-item-name)
macro-menu-command(macro-menu-item-name)
Some notes on argument types above:
filename Path names are interpreted relative to the directory
from which NEdit was started, wildcards and ~ are not
expanded.
search-direction Either "forward" or "backward"
search-type Either "literal", "case", or "regex"
mark-letter The mark command limits users to single letters.
Inside of macros, numeric marks are allowed, which
won't interfere with marks set by the user.
(macro or shell) Name of the command exactly as specified in the Macro
-menu-item-name Commands or Shell Commands dialogs
Keyboard-Only Actions
backward-character()
Moves the cursor one character to the left.
backward-paragraph()
Moves the cursor to the beginning of the paragraph, or if the cursor is already
at the beginning of a paragraph, moves the cursor to the beginning of the
previous paragraph. Paragraphs are defined as regions of text delimited by one
or more blank lines.
backward-word()
Moves the cursor to the beginning of a word, or, if the cursor is already at
the beginning of a word, moves the cursor to the beginning of the previous
word. Word delimiters are user-settable, and defined by the X resource
wordDelimiters.
beginning-of-file()
Moves the cursor to the beginning of the file.
beginning-of-line()
Moves the cursor to the beginning of the line.
beginning-of-selection()
Moves the cursor to the beginning of the selection without disturbing the
selection.
copy-clipboard()
Copies the current selection to the clipboard.
copy-primary()
Copies the primary selection to the cursor.
copy-to()
If a secondary selection exists, copies the secondary selection to the cursor.
If no secondary selection exists, copies the primary selection to the pointer
location.
copy-to-or-end-drag()
Completes either a secondary selection operation, or a primary drag. If the
user is dragging the mouse to adjust a secondary selection, the selection is
copied and either inserted at the cursor location, or, if pending-delete is on
and a primary selection exists in the window, replaces the primary selection.
If the user is dragging a block of text (primary selection), completes the drag
operation and leaves the text at it's current location.
cut-clipboard()
Deletes the text in the primary selection and places it in the clipboard.
cut-primary()
Copies the primary selection to the cursor and deletes it at its original
location.
delete-selection()
Deletes the contents of the primary selection.
delete-next-character()
If a primary selection exists, deletes its contents. Otherwise, deletes the
character following the cursor.
delete-previous-character()
If a primary selection exists, deletes its contents. Otherwise, deletes the
character before the cursor.
delete-next-word()
If a primary selection exists, deletes its contents. Otherwise, deletes the
word following the cursor.
delete-previous-word()
If a primary selection exists, deletes its contents. Otherwise, deletes the
word before the cursor.
delete-to-start-of-line()
If a primary selection exists, deletes its contents. Otherwise, deletes the
characters between the cursor and the start of the line.
delete-to-end-of-line()
If a primary selection exists, deletes its contents. Otherwise, deletes the
characters between the cursor and the end of the line.
deselect-all()
De-selects the current selection.
end-of-file()
Moves the cursor to the end of the file.
end-of-line()
Moves the cursor to the end of the line.
end-of-selection()
Moves the cursor to the end of the selection without disturbing the selection.
exchange()
Exchange the primary and secondary selections.
extend-adjust()
Attached mouse-movement events to begin a selection between the cursor and the
mouse, or extend the primary selection to the mouse position.
extend-end()
Completes a primary drag-selection operation.
extend-start()
Begins a selection between the cursor and the mouse. A drag-selection
operation can be started with either extend-start or grab-focus.
forward-character()
Moves the cursor one character to the right.
forward-paragraph()
Moves the cursor to the beginning of the next paragraph. Paragraphs are
defined as regions of text delimited by one or more blank lines.
forward-word()
Moves the cursor to the beginning of the next word. Word delimiters are
user-settable, and defined by the X resource wordDelimiters.
grab-focus()
Moves the cursor to the mouse pointer location, and prepares for a possible
drag-selection operation (bound to extend-adjust), or multi-click operation (a
further grab-focus action). If a second invocation of grab focus follows
immediately, it selects a whole word, or a third, a whole line.
insert-string("string")
If pending delete is on and the cursor is inside the selection, replaces the
selection with "string". Otherwise, inserts "string" at the cursor location.
key-select("direction")
Moves the cursor one character in "direction" ("left", "right", "up", or "down")
and extends the selection. Same as: forward/backward-character("extend"), or
process-up/down("extend"), for compatibility with previous versions.
move-destination()
Moves the cursor to the pointer location without disturbing the selection.
(This is an unusual way of working. We left it in for compatibility with
previous versions, but if you actually use this capability, please send us some
mail, otherwise it is likely to disappear in the future.
move-to()
If a secondary selection exists, deletes the contents of the secondary
selection and inserts it at the cursor, or if pending-delete is on and there is
a primary selection, replaces the primary selection. If no secondary selection
exists, moves the primary selection to the pointer location, deleting it from
its original position.
move-to-or-end-drag()
Completes either a secondary selection operation, or a primary drag. If the
user is dragging the mouse to adjust a secondary selection, the selection is
deleted and either inserted at the cursor location, or, if pending-delete is on
and a primary selection exists in the window, replaces the primary selection.
If the user is dragging a block of text (primary selection), completes the drag
operation and deletes the text from it's current location.
newline()
Inserts a newline character. If Auto Indent is on, lines up the indentation of
the cursor with the current line.
newline-and-indent()
Inserts a newline character and lines up the indentation of the cursor with the
current line, regardless of the setting of Auto Indent.
newline-no-indent()
Inserts a newline character, without automatic indentation, regardless of the
setting of Auto Indent.
next-page()
Moves the cursor and scroll forward one page.
page-left()
Move the cursor and scroll left one page.
page-right()
Move the cursor and scroll right one page.
paste-clipboard()
Insert the contents of the clipboard at the cursor, or if pending delete is on,
replace the primary selection with the contents of the clipboard.
previous-page()
Moves the cursor and scroll backward one page.
process-bdrag()
Same as secondary-or-drag-start for compatibility with previous versions.
process-cancel()
Cancels the current extend-adjust, secondary-adjust, or
secondary-or-drag-adjust in progress.
process-down()
Moves the cursor down one line.
process-return()
Same as newline for compatibility with previous versions.
process-shift-down()
Same as process-down("extend") for compatibility with previous versions.
process-shift-up()
Same as process-up("extend") for compatibility with previous versions.
process-tab()
If tab emulation is turned on, inserts an emulated tab, otherwise inserts a tab
character.
process-up()
Moves the cursor up one line.
secondary-adjust()
Attached mouse-movement events to extend the secondary selection to the mouse
position.
secondary-or-drag-adjust()
Attached mouse-movement events to extend the secondary selection, or reposition
the primary text being dragged. Takes two optional arguments, "copy", and
"overlay". "copy" leaves a copy of the dragged text at the site at which the
drag began. "overlay" does the drag in overlay mode, meaning the dragged text
is laid on top of the existing text, obscuring and ultimately deleteing it when
the drag is complete.
secondary-or-drag-start()
To be attached to a mouse down event. Begins drag selecting a secondary
selection, or dragging the contents of the primary selection, depending on
whether the mouse is pressed inside of an existing primary selection.
secondary-start()
To be attached to a mouse down event. Begin drag selecting a secondary
selection.
select-all()
Select the entire file.
self-insert()
To be attached to a key-press event, inserts the character equivalent of the
key pressed.
Arguments to Keyboard Action Routines
In addition to the arguments listed in the call descriptions, any routine
involving cursor movement can take the argument "extend", meaning, adjust the
primary selection to the new cursor position. Routines which take the "extend"
argument as well as mouse dragging operations for both primary and secondary
selections can take the optional keyword "rect", meaning, make the selection
rectangular.
SOLUTIONS TO COMMON PROBLEMS
P: No files are shown in the "Files" list in the Open... dialog.
S: When you use the "Filter" field, include the file specification or a
complete directory specification, including the trailing "/" on Unix. (See
Help in the Open... dialog).
P: Keyboard shortcuts for menu items don't work.
S: Be sure the Caps Lock and Num Lock keys are both unlocked. In Motif
programs, these keys prevent the menu accelerators from working.
P: Find Again and Replace Again don't continue in the same direction as the
original Find or Replace.
S: Find Again and Replace Again don't use the direction of the original search.
The Shift key controls the direction: Ctrl+G means forward, Shift+Ctrl+G
means backward.
P: Preferences specified in the Preferences menu don't seem to get saved when I
select Save Defaults.
S: NEdit has two kinds of preferences: 1) per-window preferences, in the
Preferences menu, and 2) default settings for preferences in newly created
windows, in the Default Settings sub-menu of the Preferences menu. Per-
window preferences are not saved by Save Defaults, only Default Settings.
P: Columns and indentation don't line up.
S: NEdit is using a proportional width font. Set the font to a fixed style
(see Preferences).
P: NEdit performs poorly on very large files.
S: Turn off Incremental Backup. With Incremental Backup on, NEdit periodically
writes a full copy of the file to disk.
P: Commands added to the Shell Commands menu (Unix only) don't output anything
until they are finished executing.
S: If the command output is directed to a dialog, or the input is from a
selection, output is collected together and held until the command
completes. De-select both of the options and the output will be shown
incrementally as the command executes.
P: Dialogs don't automatically get keyboard focus when they pop up.
S: Most X Window managers allow you to choose between two categories of
keyboard focus models: pointer focus, and explicit focus. Pointer focus
means that as you move the mouse around the screen, the window under the
mouse automatically gets the keyboard focus. NEdit users who use this focus
model should set "Popups Under Pointer" in the Default Settings sub menu of
the preferences menu in NEdit. Users with the explicit focus model, in some
cases, may have problems with certain dialogs, such as Find and Replace. In
MWM this is caused by the mwm resource startupKeyFocus being set to False
(generally a bad choice for explicit focus users). NCDwm users should use
the focus model "click" instead of "explicit", again, unless you have set it
that way to correct specific problems, this is the appropriate setting for
most explicit focus users.
KNOWN BUGS
Below is the list of known bugs which affect NEdit. The bugs your copy of
NEdit will exhibit depend on which system you are running and with which Motif
libraries it was built. Note that there are now Motif 1.2 / X11R5 libraries
available on ALL supported platforms, and as you can see below there are far
fewer bugs in Motif 1.2, so it is in your best interest to upgrade your system.
All Versions
BUG: Operations between rectangular selections on overlapping lines do nothing.
WORKAROUND: None. These operations are very complicated and rarely used, maybe
next version.
BUG: Cut and Paste menu items fail, or possibly crash, for very large
(multi-megabyte) selections.
WORKAROUND: Use selection copy (middle mouse button click) for transferring
larger quantities of data. Cut and Paste save the copied text in server
memory, which is usually limited.
Motif 1.1 Versions
BUG: The shortcut method for entering control characters (Alt+Ctrl+char) is not
available.
WORKAROUND: Use the Ins. Control Char command.
BUG: Pop-up dialogs "jump" (appear briefly in a different location) when they
are first invoked.
WORKAROUND: Turn off "Popups Under Pointer" if this gives you a headache.
VMS Versions
BUGS: 1. Abbreviation of command line qualifiers is not allowed.
2. Error messages for mistakes on the command line don't make sense.
WORKAROUND: NEdit does not parse its command line with the standard DCL command
parser, instead, it superficially converts the command line to a
Unix-style command line before processing it. Because information is
lost, NEdit may not always be able to distinguish between items that are
supposed to be qualifiers and those which are supposed to be files and
arguments to the qualifiers. However, correct VMS command lines are
always processed correctly, and only certain types of errors will appear
to give strange results.
BUG: Protection settings for new versions of files produced by NEdit over
DECNET connections may revert to defaults.
WORKAROUND: Check and reset protections when accessing files via DECNET.
IBM Versions built with Motif 1.1
BUG: The Command to set the font for the current window is not available.
WORKAROUND: Use the Default Settings sub-menu to set the default font and then
create a new window.
BUG: NEdit can occasionally crash on window closing.
WORKAROUND: Save files frequently, see Crash Recovery.
MAILING LIST
There are now two separate mailing lists for NEdit users. nedit_discuss, as the
name implies, is for open discussion among NEdit users. nedit_announces
intended to be a very low volume mailing list for announcement of new versions,
new executables, and significant contributed software.
To subscribe to nedit_discuss, send a message containing the following line in
the body of the message (not the subject) to mailserv@fnal.gov:
subscribe nedit_discuss
To subscribe to nedit_announce, send a separate message to mailserv@fnal.gov
containing the line:
subscribe nedit_announce
To unsubscribe, send:
unsubscribe nedit_discuss (or nedit_announce)
After subscribing, you will receive copies of all of the email submitted to the
list. You may submit mail to the discussion list by sending it to:
nedit_discuss@fnal.gov
Users are allowed to post to nedit_announce as well (just make sure that the
content is appropriate).
DISTRIBUTION POLICY
FermiTools Software Legal Information - November 1, 1996
COPYRIGHT STATUS: Fermi National Accelerator Laboratory (FNAL) documents are
sponsored by the U.S. Department of Energy under Contract No.
DE-AC02-76CH03000. Therefore, the U.S. Government retains a non-exclusive,
royalty-free license to publish or reproduce these documents or software for
U.S. Government purposes. All documents and software available from this
server are protected under the U.S. and Foreign Copyright Laws, and FNAL
reserves all rights.
Terms and Conditions
When a User distributes or otherwise obtains a software package included in
the Fermilab Software Tools Program, the user agrees to abide by the Terms and
Conditions of the Program below:
o Any redistribution of the software shall be accompanied by this
INFORMATION/LICENSE AGREEMENT and the product's ORIGIN STATEMENT (below).
o The User shall acknowledge the origin of the software as set forth
below:
"This work was performed at Fermi National Accelerator Laboratory,
operated by Universities Research Association, Inc., under contract
DE-AC02-76CH03000 with the U.S. Department of Energy."
o The user is asked to feed back problems, benefits, and/or suggestions
about the software to the Fermilab Software Providers and/or FermiTools
management.
o Any distribution of the software available from this server shall be at
no charge. To obtain a license to commercialize any of the software
programs available from Fermilab including this software, contact FNAL's
Office of Research and Technology Applications, P.O. Box 500, MS-200,
Batavia, IL 60510-0500.
Indemnification by User of Third Party Claims and Disclosure of Liability
The User, his/her directors, officers, employees, and agents hereby release
and waive all claims against Universities Research Association, Inc. (URA)
operator of Fermi National Accelerator Laboratory, its trustees, overseers,
directors, officers, employees, agents, subcontractors, successors and
assigns, for any and all liability and damages arising from the reproduction,
use or other disposition of the software. The User shall indemnify URA and
the U.S. Government for all damages, costs or expenses, including attorney's
fees, arising from the utilization of the software, including, but not limited
to, the making, using, selling or exporting of products, processes or services
derived from the Software. The User agrees to indemnify, hold harmless and
defend URA, its trustees, overseers, directors, officers, employees, agents,
subcontractors, successors and assigns, against any and all liability, damage,
loss, cost, charge, claim, demand, fee or expense of every nature and kind
which may at any time hereafter, be sustained by URA by reason of claims of
third parties arising out of alleged acts or omissions of the User in the
reproduction, use or other disposition of the Software.
The User agrees that URA, its trustees, overseers, directors, officers,
employees, agents, subcontractors, successors and assigns shall not be liable
under any claim, charge, or demand, whether in contract, tort, criminal law,
or otherwise, for any and all loss, cost, charge, claim, demand, fee, expense,
or damage of every nature and kind arising out of, connected with, resulting
from or sustained as a result of the use of the software programs available
from this server. In no event shall URA be liable for special, direct,
indirect or consequential damages, losses, costs, charges, claims, demands,
fees or expenses of any nature or kind.
Disclaimer of Warranties
The software is provided on an "as is" basis only. URA makes no
representations, express or implied. URA makes no representations or
warranties of merchantability or fitness for any particular purpose, or
assumes any legal liability or responsibility for the accuracy, completeness,
or usefulness of any information, apparatus, product or process disclosed, or
represents that the Software will not infringe any privately held patent,
copyright, or trademark. The entire risk as to the results and the
performance of this software is assumed by the User.
Disclaimer of Endorsement
Reference herein to any specific commercial products, process, or service by
tradename, trademark, manufacturer or otherwise, does not constitute or imply
its endorsement, recommendation, or favoring by the United States Government,
U.S. Department of Energy or URA. The views and opinions of individuals
expressed herein do not necessarily state or reflect those of the United
States Government, U.S. Department of Energy or URA and shall not be used for
advertising or product endorsement purposes.
Liabilities of the Government
This software is provided by URA, independent from its Prime Contract with the
U.S. Department of Energy. URA is acting independently from the Government
and in its own private capacity and is not acting on behalf of the U.S.
Government, nor as its contractor nor its agent. Correspondingly, it is
understood and agreed that the U.S. Government has no connection to this
software and in no manner whatsoever shall be liable for nor assume any
responsibility or obligation for any claim, cost, or damages arising out of or
resulting from the use of the software available from this server.
ORIGIN STATEMENT
Authors
Mark Edel, Joy Kyriakopulos, Arnulfo Zepeda-Navratil, Suresh Ravoor, Donna Reid,
Jeff Kallenbach
Fermi National Accelerator Laboratory
MS 234
P.O.Box 500
Batavia, IL 60510
Acknowledgement:
Regular expression code by Henry Spencer
Nedit incorporates an altered version of Henry Spencer's regcomp and regexec
code adapted for NEdit. Original copyright notice:
Copyright (c) 1986 by University of Toronto. Written by Henry Spencer. Not
derived from licensed software.
Permission is granted to anyone to use this software for any purpose on any
computer system, and to redistribute it freely, subject to the following
restrictions:
1. The author is not responsible for the consequences of use of this software,
no matter how awful, even if they arise from defects in it.
2. The origin of this software must not be misrepresented, either by explicit
claim or by omission.
3. Altered versions must be plainly marked as such, and must not be
misrepresented as being the original software.
End of INFORMATION/LICENSE AGREEMENT FOR NEDIT.